package com.wfs.suanfa.leet;

import java.util.Objects;
import java.util.Scanner;

/**
 * @author wfs
 * @date 2022-10-28 10:44
 * 井字棋为3x3棋盘，你需要实现自动下井字棋的程序，根据对方的落子位置选择最优位置，直到游戏结束。
 * 井字棋T-Tac-Toe玩法
 * 两个玩家，一倜打圈(O)，一倜打叉(x)，轮流在3乘3的格上打自己的符号，最先以横、直、斜连成一线则为胜。如果双方都下得正确无误，棋盘将会被填满而和局。
 * 下图是×方获胜的示例:
 * O
 * ×
 * 赛题
 * 井字棋为3x3棋盘，你需要实现自动下井字棋的程序，根据对方的落子位置选择最优位置，直到游戏结束。
 * 游戏规则
 * 1.根据主持人的规则，选择一个战队作为你的对手
 * 2.共对弈两局，每人一局先手，拥有先手的人根据程序先选择一个位置落子
 * 3.程序选择最优落子位置，落子后打印出具体坐标，作为对手棋盘的输入
 * 4.根据对手的坐标输出，在控制台输入对手坐标，由程序选择下一个落子位置，如此反复，直到本局结束
 */
public class PlayChess {
    //-1  1
    static int[][]  arr =new int[3][3];
    //是否先手
    static boolean goFirst=true;
    static Scanner scanner=new Scanner(System.in);

    public static void main(String[] args) {
        //赋值先手信息
        initGoFirst();
        //如果是先手则自动生成坐标
        if (goFirst){
            analysis(1);
        }else {
            System.out.println("请输入落子所在行:");
            int row = scanner.nextInt();
            System.out.println("请输入落子所在列:");
            int column = scanner.nextInt();
            int value=arr[row][column];
            if (Objects.nonNull(value)){
                System.err.println("该坐标已存在数据，不允许重复");
            }
            arr[row][column]=1;
            //自动分析 算出下一个坐标
            analysis(1);
        }

    }

    /**
     * temp 为自己棋子标识
     */
    private static void analysis(int temp) {
        for (int i = 0; i < arr.length; i++) {
        }
        //分析对手棋子

        //分析自己棋子最优位置
    }
    private static void initGoFirst() {
        System.out.println("请确认是否作为先手:0先手 1后手");
        int value=scanner.nextInt();
        if (value ==0){
            goFirst=true;
        }else if (value==1){
            goFirst=false;
        }else {
            System.err.println("输入有误 请重新输入");
            initGoFirst();
        }
    }
}
